Julia - Osnovna sintaksa - crtanje grafika funkcija

In [1]:
#U okviru ovog notebook-a daćemo prikaz osnovnih opcija za iscrtavanje grafika u programskom paketu Julia.
#Osnovna napomena koju odmah moramo naglasiti jeste ta da se podaci koje iscrtavamo moraju prosleđivati kao nizovi 
#brojeva koji će prestavljati vrednosti argumentata funkcije, kao i vrednosti funkcije u željenim tačkama za 
#iscrtavanje
In [ ]:
#pre svega, potrebno je instalirati biblioteku za rad sa funkcijama za plotovanje:
import Pkg;
Pkg.add("Plots")
In [2]:
#Nakon što je izvršena instalacija date biblioteke, 
#potrebno je izvrršiti njeno učitavanje
using Plots
In [3]:
#za obično crtanje grafika funkcije jednog argumenta potrebno je proslediti funkciji plot() dva niza tačaka
#od kojih će prvi niz tačaka x predstavljati niz tačaka u kojima crtamo funkciju, a drugi niz 
#tačaka će predstavljati vrednosti funkcije u datoj tački. Ova dva niza moraju biti istih dužina!
x = 1 : 8; y = 1 : 8;  #iscrtaćemo funkciju y = x u 8 
                       #ekvidistanih tačaka, gde će početna tačka biti x=1, a krajnja x=8
plot(x,y)
Out[3]:
In [4]:
#Ono šta možemo primetiti jeste da za tačke koje prosleđene, a koje se nalaze između tačaka koje jesu prosleđene,
# da se za njih vrši linearna interpolacija, tj. grafici se deo po deo dopunjuju linearnim segmentima
In [5]:
#Ukoliko želimo da izvršimo imenovanje našeg grafika to možemo uraditi sa opcijom dodavanja naslova (eng. Title)
plot(x,y, title = "function y = x")
Out[5]:
In [6]:
#Za neke primene od dosta većeg interesa nam je da imamo i drugačiji vid prikaza dobijenih rezultata. Veoma često
#u primenama od interesa nam nije da imamo iscrtavanje našeg grafika funkcije kao grafika "neprekidne funkcije" što 
#se postiže pomoću naredbe plot(), već želimo tačka-po-tačka prikaz (eng. scatter). To možemo postići korišćenjem
#funkcije scatter() na sledeći način:

scatter(x,y, title = "scatter plot of function y = x")
Out[6]:
In [7]:
#alternativno, to možemo raditi i sa funkcijom plot(), ali ćemo onda morati da postavimo opcioni parametar
#seriestype na :scatter
plot(x, y, seriestype = :scatter, title = "scatter plot of function y = x")
Out[7]:
In [8]:
#Ukoliko želimo da vršimo i odnačavanje naših osa (što se u obavljanju zadataka jako često i podrazumeva da 
#moramo da radimo), to možemo postići i naknadnim definisanjem imena naših osa
plot(x,y, title = "function y = x")
xlabel!("x osa")
ylabel!("y osa")
Out[8]:
In [9]:
#Ukoliko bismo hteli da imamo više funkcija iscrtanih na istom grafiku to možemo postići tako što npr.
# stavimo da one imaju zajednički domen (vektor x), a potom pozivom funkcije plot kao u prethodnim primerima
#će se obaviti paralelno iscrtavanje grafika ovih funkcija na istom grafiku. Svakoj od ovih funkcija možemo
#dodati i naznaku kako bismo mogli da lakše razlikujemo šta koja od njih predastavlja, korišćenjem naredbe label
#i dodelom imena onim redosledom kojim ih i želimo iscrtane. Na primeru to izgleda ovako:

x = 1:100; y = rand(100, 3); 
plot(x, y, title = "3 realizacije slušajnog procesa y", label = ["realizacija 1 " "realizacija 2" "realizacija 3"])
Out[9]:
In [10]:
#Takođe, možemo vršiti i kontrolu nad time koliko želimo da nam linija za iscrtavanje bude široka. To se postiže 
#podešavanjem opcionog parametra lw:

x = 1 : 8; y = 1 : 8; 
plot(x,y, title = "funkcija y = x", lw = 4)
Out[10]:
In [11]:
#Za kraj daćemo mogućnost prikaza subplotova na jednoj slici. To se postiže podešavanjem opcionog parametra layout
#tako što mu se prosledi uređeni par, gde prvi broj odgovara broju vrsta, a drugi broj odgovara broju kolona 
#za prikaz naših plotova:

x1 = 1 : 10; y1 = 1:10;
x2 = 1 : 10; y2 = 2:2:20;
p1 = plot(x1,y1); p2 = plot(x2,y2);
plot(p1,p2, layout = (2,1))
Out[11]:
In [ ]: